/**
 * <li>文件名：SysRoleManager.java
 * <li>说明：
 * <li>创建人： 曾明辉
 * <li>创建日期：2011-3-12
 * <li>修改人： 
 * <li>修改日期：
 */
package com.gp.sys.manager;

import java.io.Serializable;
import java.util.Iterator;
import java.util.List;

import com.gp.base.BaseManager;
import com.gp.base.except.BusinessException;
import com.gp.sys.domain.SysResource;
import com.gp.sys.domain.SysRole;
import com.gp.sys.domain.SysRoleResource;

/**
 * <li>类型名称：
 * <li>说明：
 * <li>创建人： 曾明辉
 * <li>创建日期：2011-3-12
 * <li>修改人： 
 * <li>修改日期：
 */
public class SysRoleManager extends BaseManager<SysRole> {

	
	
	@Override
	public SysRole get(Serializable id) throws BusinessException {
		SysRole role = super.get(id);
		List<SysResource> sysResources = this.baseDao.find(id, "SysRoleResource.findSysResource");
		role.setSysResources(sysResources);
		
		return role;
	}

	@Override
	public SysRole insert(SysRole entity) throws BusinessException {
		super.insert(entity);
		
		this.insertRoleResource(entity);//插入SysRoleResource关系表
		
		return entity;
	}

	@Override
	public SysRole update(SysRole entity) throws BusinessException {
		super.update(entity);
		
		this.baseDao.delete("SysRoleResource.deleteByRoleId", entity.getId());//删除关系表
		this.insertRoleResource(entity);//插入SysRoleResource关系表
		
		return entity;
	}
	

	@Override
	public void deleteByIds(Serializable... ids) throws BusinessException {
		super.deleteByIds(ids);
		this.baseDao.delete("SysRoleResource.deleteByRoleId", ids);//删除关系表
	}

	@Override
	protected void checkDelete(Serializable id) throws BusinessException {
		
	}

	@Override
	protected void checkUnique(SysRole entity) throws BusinessException {
		
	}

	/**
	 * 
	 * <li>方法名：insertRoleResource
	 * <li>@param entity
	 * <li>返回类型：void
	 * <li>说明：插入SysRoleResource关系表
	 * <li>创建人：曾明辉
	 * <li>创建日期：2011-3-12
	 * <li>修改人： 
	 * <li>修改日期：
	 */
	private void insertRoleResource(SysRole entity){
		for (SysResource resource : entity.getSysResources()) {
			SysRoleResource roleResource = new SysRoleResource();
			roleResource.setRoleId(entity.getId());
			roleResource.setResourceId(resource.getId());
			this.baseDao.insert(roleResource);
		}
	}
}
